const router = require('express').Router();
const { v4: uuidv4 } = require('uuid');// 生成id (随机字符串)
const Jwt = require('../../common/token/jwt');//处理token的工具 json web token
const aes = require('../../common/aes');//加密的工具
const adminModel = require('../../model/administratorModel')
// 管理员登录接口
// URL: /api/admin/signin
// 参数：administrator_phone , administrator_pwd
// 请求方式: POST
router.post('/signin', async (req,res)=>{
    let {administrator_phone, administrator_pwd} = req.body;
    if(administrator_phone && administrator_pwd) {
        // 登录方法
        await adminModel.signin(administrator_phone)
        .then(
            (content)=>{
                // console.log("Y:",content)
                let { rows } = content;
                if(rows[0]){
                    // 判断密码是否正确
                    // console.log(rows , administrator_pwd, rows[0].administrator_pwd)
                    if(aes.aesDecrypt(administrator_pwd, rows[0].administrator_pwd)){
                        // 生成token (临时身份) 
                        let administrator_id = rows[0].administrator_id;
                        let jsonwebtoken = new Jwt(administrator_id);
                        // 追踪用户的登录状态
                        let token = jsonwebtoken.getToken();
                        res.send({
                            code: 200,
                            msg: '登录管理员账号成功。',
                            token,
                            administrator_name:rows[0].administrator_name,
                            administrator_email:rows[0].administrator_email,
                            administrator_phone:rows[0].administrator_phone,
                            administrator_role:rows[0].administrator_role,
                        })
                    }
                    else {
                        res.send({
                            code: -1,
                            msg: '账号或者密码错误。'
                        })
                    }
                }
                else {
                    res.send({
                        code: 404,
                        msg: '该账号不存在。'
                    })
                }
            },
            (error)=>{

            },
        )
    }
    else {
        res.send({
            code: 404,
            msg: '缺少参数。'
        })
    }

})
// 管理员注册接口
// URL: /api/admin/signup
// 参数：联系电话（账号） ，密码，管理员姓名，管理员邮箱
// 参数：administrator_phone,administrator_pwd,administrator_name,administrator_email
// 请求方式: POST
router.post('/signup', async (req,res)=>{
    let {administrator_phone,administrator_pwd,administrator_name,administrator_email} = req.body;
    if(administrator_phone && administrator_pwd) {
        // 加密密码
        administrator_pwd = aes.aesEncrypt(administrator_pwd);
        await adminModel.signup(administrator_phone,administrator_pwd,administrator_name,administrator_email)
        .then(
            (content)=>{
                res.send(content)
            },
            (error)=>{
                res.send(error)
            }
        )
    }
    else {
        res.send({
            code: 404,
            msg: '缺少参数。'
        })
    }
})
// 用户列表
// URL: /api/admin/list_user
// 参数：token , page , pageSize
// 请求方式: GET
router.get('/list_user',async (req,res)=> {
    // 获取token
    let token = req.query.token || req.headers.token;
    // 验证token
    let result = new Jwt(token).verifyToken();
    if (result.code == 200) {
        let {page , pageSize} = req.query;
        // 分页列表
        await adminModel.list_user(page , pageSize)
        .then(
            (content)=>{
                res.send(content)
            },
            (error)=>{
                res.send(error)
            }
        )
    }
    else {
        res.send({
            code: -1,
            msg: '登录失效,请重新登录。'
        })
    }
})

// 删除用户
// URL: /api/admin/remove_user
// 参数：token , user_id
// 请求方式: POST
router.post('/remove_user',async (req,res)=> {
    // 获取token
    let token = req.body.token || req.headers.token;
    // 验证token
    let result = new Jwt(token).verifyToken();
    if (result.code == 200) {
        let {user_id} = req.body;
        // 删除
        await adminModel.remove_user(user_id)
        .then(
            (content)=>{
                res.send(content)
            },
            (error)=>{
                res.send(error)
            }
        )
    }
    else {
        res.send({
            code: -1,
            msg: '登录失效,请重新登录。'
        })
    }
})

// 搜索用户
// URL: /api/admin/search
// 参数：keyword
// 请求方式: GET
router.get('/search',async (req,res)=> {
    // 获取token
    let token = req.query.token || req.headers.token;
    // 验证token
    let result = new Jwt(token).verifyToken();
    if (result.code == 200) {
        let {keyword} = req.query;
        // 删除
        await adminModel.search(keyword)
        .then(
            (content)=>{
                res.send(content)
            },
            (error)=>{
                res.send(error)
            }
        )
    }
    else {
        res.send({
            code: -1,
            msg: '登录失效,请重新登录。'
        })
    }
})

// 修改用户资料
// URL: /api/admin/modify
// 参数：token , user_id,user_name,user_pw
// 请求方式: POST
router.post('/modify',async (req,res)=> {
    // 获取token
    let token = req.body.token || req.headers.token;
    // 验证token
    let result = new Jwt(token).verifyToken();
    if (result.code == 200) {
        let {user_id,user_name,user_pwd} = req.body;
        let user_pwd2 = aes.aesEncrypt(user_pwd);
        // 删除
        await adminModel.modify(user_id, user_name,user_pwd2)
        .then(
            (content)=>{
                res.send(content)
            },
            (error)=>{
                res.send(error)
            }
        )
    }
    else {
        res.send({
            code: -1,
            msg: '登录失效,请重新登录。'
        })
    }
})

// 修改管理员资料
// URL: /api/admin/modify_admin
// 参数：token,administrator_name,new_admin_pwd,old_admin_pwd
// 请求方式: POST
router.post('/modify_admin',async (req,res)=> {
    // 获取token
    let token = req.body.token || req.headers.token;
    // 验证token
    let result = new Jwt(token).verifyToken();
    if (result.code == 200) {
        // console.log({token})
        // console.log(result)
        // console.log(result)
        let administrator_id = result.info.data;
        let {administrator_name,new_admin_pwd,old_admin_pwd} = req.body;
        let user_pwd2 = aes.aesEncrypt(new_admin_pwd);
        // 修改
        // console.log({administrator_id, administrator_name,user_pwd2,old_admin_pwd})
        await adminModel.modify_admin(administrator_id, administrator_name,user_pwd2,old_admin_pwd)
        .then(
            (content)=>{
                res.send(content)
            },
            (error)=>{
                res.send(error)
            }
        )
    }
    else {
        res.send({
            code: -1,
            msg: '登录失效,请重新登录。'
        })
    }
})

module.exports = router;